查看原文
其他

中文数据可视化你需要知道的一个库

大邓 大邓和他的Python 2019-04-26

最近在知乎上看到要想用python做数据分析,最好有实用场景,而最适合长期学习的领域之一就是python量化金融。

因为会有无穷尽的知识等着你去学,有一个说法很生动。在别的领域的理论,只需要3%的理论可能就能解释90%的现象,但是在金融领域,90%的理论只能解释3%的现象。

看样子金融可以研究一辈子,但是长周期意味着反馈时间一般都很漫长,学了半天我们不知道自己是否学到,学的好不好,因此一般人很难坚持下来。不过python与金融一起学习,会让反馈时间极大地缩短,让你就像打游戏一样一边学习一遍实践。

今天就先放一段大邓在画股价折线图遇到的中文显示问题及解决办法

获取股价数据

我使用的tushare金融数据库获取股价数据

  1. import tushare as ts


  2. xingye_bank = ts.get_h_data('601166', start='2018-01-01', end='2018-03-25') #两个日期之间的前复权数据

  3. jingdongfang = ts.get_h_data('000725', start='2018-01-01', end='2018-03-25') #两个日期之间的前复权数据

  4. #显示兴业银行前5条数据

  5. xingye_bank.head()

将数据当天收盘价close加入到dataframe中

  1. import pandas as pd


  2. data = {'兴业银行': xingye_bank.close,

  3. '京东方':jingdongfang.close}


  4. df = pd.DataFrame(data)

  5. #时间date是降序,需要更改为升序,并且是原地修改

  6. df.sort_values(by='date',ascending=True,inplace=True)

  7. df.head()

pandas是支持matplotlib的,我直接使用df.plot(kind='line')画折线图

  1. import matplotlib.pyplot as plt

  2. %matplotlib inline

  3. df.plot(kind='line')

看上图中的图例并没有显示中文,而是乱码。因为python的matplotlib默认不支持中文,所以连带着像pandas、seaborn等也不支持中文的。百度查到的在解决方案大多是

  1. plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

  2. plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

在mac电脑中上面的代码声明是无效的,而且最关键的是代码不好记住。大邓比较懒,一般都是图中的图例尽量用英文书写,省去这些麻烦事。不过总有需要中文的时候,这次我写股价走势时,就很想显示中文。经过一番百度谷歌的探索,发现一个库pyplotz。

在使用基于matplotlib的库画图时,结合Pyplotz,无需繁琐的配置环境就可以显示中文,真是居家旅游数据分析必备库^_^。

安装pyplotz

  1. !pip3 install pyplotz

下面我们重新绘图,大家如果熟悉matplotlib就会很容易的看懂

  1. from pyplotz.pyplotz import PyplotZ

  2. from pyplotz.pyplotz import plt

  3. %matplotlib inline


  4. pltz = PyplotZ()

  5. pltz.enable_chinese() #支持中文


  6. pltz.set_figure_size(10, 5) #设置画布尺寸

  7. #x,y, 线条颜色, label图例名字, alpha透明度(范围从0到1)

  8. pltz.plot(df.index, df['兴业银行'], 'g', label='兴业银行', alpha=0.7)

  9. pltz.plot(df.index, df['京东方'], 'y', label='京东方', alpha=0.7)


  10. #坐标的名字

  11. pltz.xlabel('日期')

  12. pltz.ylabel('股价')

  13. #显示图例,loc设置图例的位置为右上角

  14. pltz.legend(loc='upper right')

  15. #自动设置字体大小

  16. pltz.automate_font_size()

wow,中文显示这个大bug真的解决了。大家可以收藏起来,以后绘图的时候可以回来看看自己的收藏。

精选文章

大神kennethreitz写出requests-html,号称为人设计的网页解析库

少有人知的python数据科学库

Python系列课(爬虫、文本分析、机器学习)视频教程

100G 文本分析语料资源(免费下载) 

十分钟带你入门最python风格的Gui库

字符串格式化你不得不知的那些事儿 

手把手教你学会LDA话题模型可视化pyLDAvis库

【工具篇】如何用Google Colab高效的学习Python

爬虫实战:抓取知乎问题“大学生如何赚到一万元”

使用Python制作WORD报告 

使用Pandas、Jinja和WeasyPrint制作pdf报告  

如何让python代码显示进度信息? 


我就希望你给我一个好看



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存